package netty.test20TcpMergeSpilt;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.util.CharsetUtil;

import java.nio.charset.Charset;
import java.util.UUID;

/**
 * ##########################
 *
 * 每一个通道的 handler都是独立的，都有自己的相互不影响
 *
 *
 */
public class MyTcpServerHandler extends SimpleChannelInboundHandler<ByteBuf> {

    private int count=0;
    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf msg) throws Exception {
        byte[] bytes = new byte[msg.readableBytes()];
        msg.readBytes(bytes);
        //将字节数组转换为字符串
        System.out.println("服务器端接收数据----》"+new String(bytes, CharsetUtil.UTF_8));
        System.out.println("服务器端读取的数据次数="+(++this.count));

        //服务器会送数据给客户端
        ByteBuf byteBuf = Unpooled.copiedBuffer(UUID.randomUUID().toString()+"   ", CharsetUtil.UTF_8);
        channelHandlerContext.writeAndFlush(byteBuf);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        ctx.close();
    }
}
